Mô tả thuật toán Bộ_lọc_Bloom

Một ví dụ của bộ lọc Bloom cho tập hợp {x, y, z}. Các mũi tên màu chỉ ra các vị trí mỗi phần tử ánh xạ đến. Phần tử w không nằm trong tập hợp {x, y, z}, bởi một trong các vị trí nó ánh xạ đến có giá trị 0. Trong ví dụ này, m=18 và k=3.

Một bộ lọc Bloom rỗng là một mảng m bit, tất cả đều bằng 0. Giả sử có k hàm băm khác nhau, mỗi hàm ánh xạ từ không gian các phần tử tới m vị trí trong bảng với xác suất như nhau. Thông thường k là một hằng số và nhỏ hơn nhiều so với m

Để chèn một phần tử, áp dụng k hàm băm để tính ra mảng k vị trí và gán cho các bit này giá trị 1.

Để kiểm tra một phần tử có nằm trong tập hợp hay không, áp dụng k hàm băm để tính ra k vị trí trong mảng và kiểm tra xem tất cả các bit đó có giá trị 1 hay không. Nếu có một bit nào đó bằng 0 thì phần tử cần kiểm tra chắc chắn không nằm trong mảng. Nếu tất cả chúng đều bằng 1 thì phần tử đó có thể nằm trong mảng.

Liên quan

Tài liệu tham khảo

WikiPedia: Bộ_lọc_Bloom http://webdocs.cs.ualberta.ca/~drafiei/papers/DupD... http://labs.google.com/papers/bigtable.html http://www.deutsche-telekom-laboratories.de/~agarw... http://algo2.iti.uni-karlsruhe.de/singler/publicat... http://www.it-c.dk/people/pagh/papers/bloom.pdf http://www.eecs.harvard.edu/~kirsch/pubs/bbbf/esa0... http://www.eecs.harvard.edu/~michaelm/postscripts/... http://www.ccs.neu.edu/home/pete/research/bloom-fi... http://www.ccs.neu.edu/home/pete/research/spin-3sp... http://citeseerx.ist.psu.edu/viewdoc/summary?doi=1...